package com.wzy.config;

import com.wzy.config.properties.SecurityProperties;
import com.wzy.handler.UserLoginInterceptor;
import com.wzy.util.RedisCache;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 跨域、拦截器配置
 */
@Configuration
@RequiredArgsConstructor
public class WebConfig implements WebMvcConfigurer
{
    private final SecurityProperties securityProperties;
    private final RedisCache redisCache;

    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        //注册Interceptor拦截器
        InterceptorRegistration registration = registry.addInterceptor(new UserLoginInterceptor(redisCache));
        registration.addPathPatterns(securityProperties.getIntercepts());    //所有路径都被拦截
        registration.excludePathPatterns(securityProperties.getExcludes()); //添加不拦截路径
    }

    @Override
    public void addCorsMappings(CorsRegistry registry)
    {
        // 设置允许跨域的路径
        registry.addMapping("/**")
                // 设置允许跨域请求的域名
                .allowedOriginPatterns("*")
                // 是否允许cookie
                .allowCredentials(true)
                // 设置允许的请求方式
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                // 设置允许的header属性
                .allowedHeaders("*")
                // 跨域允许时间
                .maxAge(3600);
    }

}